import pyautogui
import time
 # 图片位置缓存字典
image_position_cache = {}
# 获取屏幕尺寸
screen_width, screen_height = pyautogui.size()
print(f"当前屏幕宽度: {screen_width} 像素")
print(f"当前屏幕高度: {screen_height} 像素")

# 移动鼠标到左侧列表
def move_mouse_to_position(x,y):
    """
    将鼠标移动到屏幕宽度10%，高度50%的位置
    """
    # 计算目标位置
    target_x = int(screen_width * x)  # 宽度
    target_y = int(screen_height *y)  # 高度
    
    # 移动鼠标
    pyautogui.moveTo(target_x, target_y)
    print("鼠标移动完成")
    
    return target_x, target_y

# 移动鼠标到指定图片位置
def move_mouse_to_image(image_path, confidence=0.8, use_cache=True):
    """
    将鼠标移动到指定图片的位置
    """
    try:
        # 如果使用缓存且缓存中有该图片的位置
        if use_cache and image_path in image_position_cache:
            cached_x, cached_y = image_position_cache[image_path]
            print(f"使用缓存位置: {image_path} -> ({cached_x}, {cached_y})")
            pyautogui.moveTo(cached_x, cached_y)
            return cached_x, cached_y
        
        # 查找图片位置
        location = pyautogui.locateOnScreen(image_path, confidence=confidence)
        
        if location:
            # 获取图片中心点
            center_x = location.left + location.width // 2
            center_y = location.top + location.height // 2
            
            # 保存到缓存
            if use_cache:
                image_position_cache[image_path] = (center_x, center_y)
                print(f"图片位置已缓存: {image_path} -> ({center_x}, {center_y})")
            
            # 移动鼠标到图片中心
            pyautogui.moveTo(center_x, center_y)
            return center_x, center_y
        else:
            print(f"未找到图片: {image_path}")
            return None
            
    except Exception as e:
        print(f"移动鼠标到图片时出错: {e}")
        return None

# 直接移动到指定坐标（不使用图片识别）
def move_mouse_to_coordinates(x, y):
    """
    直接移动鼠标到指定坐标
    """
    pyautogui.moveTo(x, y)
    print(f"鼠标已移动到坐标: ({x}, {y})")
    return x, y

# 找到需要转发的第位置
def find_message_position():
    # 导入暂停检查函数
    import test

    for _ in range(100):
        # 检查停止信号
        if test.check_should_stop():
            print("检测到停止信号，立即终止查找")
            return

        # 检查暂停状态
        test.wait_if_paused()

        try:
            message = move_mouse_to_image('static/images/message.jpg', 0.9,False)
            if message is not None:

                for _ in range(1):
                    # 在每个操作前检查停止信号
                    if test.check_should_stop():
                        print("检测到停止信号，立即终止操作")
                        return

                    # 检查暂停状态
                    test.wait_if_paused()
                    # 在睡眠前检查
                    if test.check_should_stop():
                        print("检测到停止信号，立即终止操作")
                        return

                    time.sleep(1)

                print('找到消息了！')

                # 在最终操作前检查
                if test.check_should_stop():
                    print("检测到停止信号，立即终止操作")
                    return

                move_mouse_to_image('static/images/message.jpg', 0.9, False)  # 禁用缓存
                time.sleep(0.1)
                pyautogui.scroll(20)
                time.sleep(0.5)
                move_mouse_to_image('static/images/message.jpg', 0.9, False)  # 禁用缓存
                break
            else:
                # 在滚动操作前检查
                if test.check_should_stop():
                    print("检测到停止信号，立即终止操作")
                    return

                pyautogui.scroll(100)

                # 在睡眠前检查
                if test.check_should_stop():
                    print("检测到停止信号，立即终止操作")
                    return

                time.sleep(0.1)
                print("未匹配到消息框，开始向滚动查找")
        except Exception as e:
            print(f"查找起点消息失败: {e}")
           
